R0=%0
R1=%1
R2=%2
R3=%3
R4=%4
R5=%5
SP=%6
PC=%7
SW=177570
STATUS=177776

HSR=2
LPT=2
TTY=1
KBD=0

.INIT=1
.RESET=2
.RESTART=3
.READ=11
.READR=13
.SEEK=5
.WAIT=4
.WRITE=12

.=2000
START:	MOV	#.,SP
	IOT
	.WORD	0
	.BYTE	.RESET,0
	IOT
	.WORD	START
	.BYTE	.RESTART,0
	IOT
	.WORD	HRTYPE
	.BYTE	.INIT,HSR
DEVICE:	IOT
	.WORD	WHERE
	.BYTE	.WRITE,TTY
	JSR	PC,GETKBD
	CMPB	BUFI1,#'H
	BEQ	HSPOUT
	CMPB	BUFI1,#'L
	BEQ	LPTOUT
	CMPB	BUFI1,#'T
	BNE	DEVICE
	IOT
	.WORD	TTYPE
	.BYTE	.INIT,LPT
	BR	GO
HSPOUT:	IOT
	.WORD	HPTYPE
	.BYTE	.INIT,LPT
	BR	GO
LPTOUT:	IOT
	.WORD	LPTYPE
	.BYTE	.INIT,LPT
GO:	IOT
	.WORD	ENTMSG
	.BYTE	.WRITE,TTY
	IOT
	.WORD	ONECHR
	.BYTE	.READR,HSR
	.WORD	REETST
	JSR	PC,GETKBD
	MOV	#BUFI1,R1
	MOV	#XLOW,R0
	JSR	PC,ATOF
	BVS	GO
	CMPB	#012,@R1
	BEQ	GO
	MOV	#XHIGH,R0
	JSR	PC,ATOF
	BVS	GO
	CMPB	#012,R1
	BEQ	GO
	MOV	#INCR,R0
	JSR	PC,ATOF
	BVS	GO
	CMPB	#012,@R1
	BEQ	GO
	MOVB	(R1)+,SRCH
	MOVB	@R1,SRCH+1
	CMP	LSI,SRCH
	BEQ	R.SIN
	CMP	LCO,SRCH
	BEQ	R.COS
	CMP	LAT,SRCH
	BEQ	R.ATAN
	CMP	LEX,SRCH
	BEQ	R.EXP
	CMP	LLO,SRCH
	BEQ	R.LOG
	CMP	LSQ,SRCH
	BNE	GO
	MOV	#SQRT,R1
	BR	XXQ1
R.SIN:	MOV	#SIN,R1
	BR	XXQ1
R.COS:	MOV	#COS,R1
	BR	XXQ1
R.ATAN:	MOV	#ATAN,R1
	BR	XXQ1
R.EXP:	MOV	#EXP,R1
	BR	XXQ1
R.LOG:	MOV	#LOG,R1
XXQ1:	MOV	R1,CALL+2
	IOT
	.WORD	FORM
	.BYTE	.WRITE,LPT
	IOT
	.WORD	INBF1
	.BYTE	.WRITE,LPT
	MOV	#XLOW,R1
	MOV	#X,R0
	EMT	207
LOOP:	MOV	#X,R1
	MOV	#XHIGH,R0
	EMT	210
	BGT	GO
	MOV	#X,R1
	MOV	#TEMP,R0
CALL:	JSR	PC,@#SIN
	EMT	20
	MOV	X,BUFO1
	EMT	20
	MOV	TEMP,BUFO1+17
	IOT
	.WORD	OUTBF2
	.BYTE	.WRITE,LPT
	IOT
	.WORD	.-2
	.BYTE	.WAIT,LPT
	MOV	#INCR,R1
	MOV	#X,R0
	JSR	PC,ADDF
	BR	LOOP

GETKBD:	IOT
	.WORD	INBF1
	.BYTE	.READ,KBD
	IOT
	.WORD	.-2
	.BYTE	.WAIT,KBD
	RTS	PC
REETST:	MOV	#X,R1
	MOV	#TEMP2,R0
	JSR	PC,@CALL+2
	EMT	20
	MOV	TEMP2,TEMP3
	IOT
	.WORD	0
	.BYTE	.SEEK,HSR
	IOT
	.WORD	ONECHR
	.BYTE	.READR,HSR
	.WORD	REETST
	RTS	PC
X:	.WORD	0,0,0
TEMP:	.WORD	0,0,0
XLOW:	.WORD	0,0,0
XHIGH:	.WORD	0,0,0
INCR:	.WORD	0,0,0

SRCH:	.WORD	0

LSI:	.ASCII	/SI/
LCO:	.ASCII	/CO/
LAT:	.ASCII	/AT/
LEX:	.ASCII	/EX/
LLO:	.ASCII	/LO/
LSQ:	.ASCII	/SQ/

ENTMSG:	.WORD	46.,0,46.
	.BYTE	15,12,12,12
	.ASCII	/ENTER LOW, HIGH, INCREMENT, AND FUNCTION/
	.BYTE	15,12
	.EVEN
INBF1:	.WORD	50,0,50
BUFI1=.
	.=.+50

OUTBF2:	.WORD	17.,0,17.
	.BYTE	15,12
BUFO1:	.ASCII	/               /
	.EVEN

FORM:	4,0,4
	.BYTE	15,12,12,14
ONECHR:	.WORD	2,2,1
	.WORD	0
WHERE:	.WORD	6,0,6
	.BYTE	15,12,12
	.ASCII	/:O /
TTYPE:	.WORD	2
HPTYPE:	.WORD	6
LPTYPE:	.WORD	7
HRTYPE:	.WORD	5
TEMP2:	.WORD	0,0,0
TEMP3:	.WORD	0,0,0,0,0,0,0,0
	.=20000
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        